# ADB
ADB(Android Debug Bridge)
는 안드로이드 기기와 통신할 수 있는 명령어 도구입니다. ADB를 사용하면 윈도우의 계열 명령 프롬프트나 리눅스 계열의 터미널처럼 연결된 기기에 접근할 수 있습니다.
ADB는 안드로이드 SDK
의 Platform Tools
에 포함되어 있습니다.
$ pwd
/Users/[your_username]/Library/Android/sdk/platform-tools
$ ls
adb
...
어느 위치에서든 ADB 명령어를 사용하려면 아래와 같이 경로 설정을 해야합니다.
$ cd ~
$ echo '/Users/[your_username]/Library/Android/sdk/platform-tools' >> ~/.bash_profile
$ source ~/.bash_profile
이제 adb --help
명령어를 입력하면 ADB와 관련된 옵션들을 확인할 수 있습니다.
$ adb --help
Android Debug Bridge version 1.0.41
Version 31.0.0-7110759
Installed as /usr/local/bin/adb
global options:
-a listen on all network interfaces, not just localhost
-d use USB device (error if multiple devices connected)
-e use TCP/IP device (error if multiple TCP/IP devices available)
-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
-t ID use device with given transport id
-H name of adb server host [default=localhost]
-P port of adb server [default=5037]
-L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]
general commands:
devices [-l] list connected devices (-l for long output)
help show this help message
version show version num
...
안드로이드는 리눅스 기반의 운영체제입니다. 따라서 연결된 기기의 리눅스 쉘에 접속할 수 있습니다. 이 때는 adb shell
명령어를 사용합니다.
$ adb shell
이제 연결된 기기의 디렉토리 구조를 확인할 수 있습니다.
$ ls
bin
data
sdcard
storage
dev
sys
system
...
# 자주 쓰는 adb 명령어
adb devices
명령어를 사용하면 실제 기기와 정상적으로 연결되었는지 확인할 수 있습니다.
$ adb devices
List of devices attached
R3CN109JVFK device
R332AEW32AA device
R3CN238IKEF offline
상태 | 설명 |
---|---|
offline | 기기가 연결되지 않았거나 비정상인 경우 |
device | 정상적으로 기기가 연결된 경우 |
no device | 연결된 기기가 없는 경우 |
adb reboot
명령어를 사용하면 기기를 재시작할 수 있습니다.
$ adb reboot
PC에서 안드로이드 기기로 파일을 복사할 수도 있습니다.
$ adb push "파일 명" "복사할 경로"
$ adb push backup.zip /sdcard
안드로이드 기기에서 PC로 파일을 복사할 수도 있습니다.
$ adb pull "파일 명" "복사할 경로"
$ adb pull /sdcard/log.txt .
APK 파일을 직접 설치할 수도 있습니다.
$ adb install [app_name].apk
$ adb install my_app.apk
앱을 삭제할 수도 있습니다.
$ adb uninstall [package_name]
$ adb uninstall com.yologger.package
연결된 기기의 시스템 정보를 가져올 수 도 있습니다.
$ adb shell dumpsys
아래와 같이 액티비티와 태스크의 스택을 확인할 때 많이 사용합니다.
$ adb shell dumpsys activity activities
위 명령어를 입력하면 너무 방대한 정보가 한꺼번에 출력됩니다. 따라서 여러 옵션과 grep
을 적절히 활용하여 필요한 정보만 출력할 수 있습니다.
$ adb shell dumpsys activity activities | grep -i [package_name] | grep -i Hist
$ adb shell dumpsys activity activities | grep -i com.yologger.activity | grep -i Hist
# 액티비티 스택 확인하기
ADB(Android Debug Bridge)
를 사용하면 현재 앱에서 실행 중인 모든 서비스를 확인할 수 있습니다.
adb shell
명령어를 사용하면 연결된 기기에 접속할 수 있습니다.
$ adb shell
dumpsys
명령어를 사용하면 모든 서비스를 확인할 수 있습니다.
> dumpsys
다음과 같이 호출할 수도 있습니다.
$ adb shell dumpsys
현재 기기에서 실행 중인 태스크와 액티비티만을 확인할 수 있습니다.
$ adb shell dumpsys activity activities
특정 앱의 태스크와 액티비티만 확인할 수도 있습니다.
$ adb shell dumpsys activity activities | grep -i [package_name] | grep -i Hist
$ adb shell dumpsys activity activities | grep -i com.yologger.myapp | grep -i Hist